Limiting
the Playback Scope
Controlling
playback begins with the MCIWndPlay
You also need
to set an appropriate time format. The time format determines whether the
content is measured in frames, milliseconds, tracks, or some other units.
The following
example creates an MCIWnd window and provides menu commands to play the last
third, first third, or middle third of the content. These menu commands use MCIWndPlayFrom,
MCIWndPlayTo, and MCIWndPlayFromTo to play the content segments.
The example also uses the MCIWndGetStart
The MCIWndCreate
case WM_COMMAND:
switch
(wParam)
{
case
IDM_CREATEMCIWND:
g_hwndMCIWnd = MCIWndCreate(hwnd,
g_hinst,
WS_CHILD | WS_VISIBLE | WS_CAPTION |
MCIWNDF_SHOWALL,
"sample.avi");
break;
case
IDM_PLAYFROM: // plays
last third of clip
MCIWndUseTime(g_hwndMCIWnd); //
millisecond format
// Get
media start and end positions.
lStart = MCIWndGetStart(g_hwndMCIWnd);
lEnd = MCIWndGetEnd(g_hwndMCIWnd);
//
Determine playback end position.
lPlayStart = 2 * (lEnd - lStart) / 3 + lStart;
MCIWndPlayFrom(g_hwndMCIWnd, lPlayStart);
break;
case
IDM_PLAYTO: // plays
first third of clip
MCIWndUseTime(g_hwndMCIWnd); //
millisecond format
// Get
media start and end positions.
lStart = MCIWndGetStart(g_hwndMCIWnd);
lEnd = MCIWndGetEnd(g_hwndMCIWnd);
//
Determine playback start position.
lPlayEnd = (lEnd - lStart) / 3 + lStart;
MCIWndHome(g_hwndMCIWnd);
MCIWndPlayTo(g_hwndMCIWnd, lPlayEnd);
break;
case
IDM_PLAYSOME: // plays middle third of clip
MCIWndUseTime(g_hwndMCIWnd); // millisecond format
// Get
media start and end positions.
lStart = MCIWndGetStart(g_hwndMCIWnd);
lEnd = MCIWndGetEnd(g_hwndMCIWnd);
// Determine playback start and end
positions.
lPlayStart = (lEnd - lStart) / 3 + lStart;
lPlayEnd = 2 * (lEnd -
lStart) / 3 + lStart;
MCIWndPlayFromTo(g_hwndMCIWnd, lPlayStart, lPlayEnd);
break;
// Handle
other commands here.
}